home *** CD-ROM | disk | FTP | other *** search
- /* CEBrowserCell.m
- *
- * This object controls the data of a beaker (molecules, cameras, groups etc.)
- * It is the main document of BeakerBoy and controls everything from loading to
- * setting up the browser which does most of the other work.
- *
- * For interface-info see the header file. The comments in this file mostly
- * cover only the real implementation details.
- *
- * Written by: Thomas Engel
- * Created: 23.10.1993 (Copyleft)
- * Last modified: 12.11.1994
- */
-
- #define CURRENT_VERSION 1
-
- #import <CEBrowserCell.h>
-
- @implementation CEBrowserCell
-
- + initialize
- {
- if ( self == [CEBrowserCell class] )
- [CEBrowserCell setVersion:CURRENT_VERSION];
-
- return self;
- }
-
- - free
- {
- // Don't free the objects...we might need them.
-
- [dragSources free];
- return self;
- }
-
- - mouseDown:(NXEvent *)theEvent forView:aView
- {
- id dragSource;
- id dragPB;
- NXPoint zero = { 0.0, 0.0 };
- NXPoint theSpot;
-
- // Only continue if there is someone who will handle the drags !
-
- if( [dragSources count] < 1 ) return self;
-
- dragPB = [Pasteboard newName:NXDragPboard];
-
- theSpot.x = (theEvent->location).x - 24;
- theSpot.y = (theEvent->location).y - 24;
- [aView convertPoint:&theSpot fromView:nil];
-
- // restrict the dragging on the first tab.
- // BUG: this should be really automatic !!
-
- if( theSpot.x > 18 - 24 ) return self;
-
- dragSource = [dragSources objectAt:0];
- [dragSource prepareDraggingPboard:dragPB];
-
- // The source should normally be the object itself.
- // Butcurrently this is only for finding out about
- // what the drag should be able to do..perhaps this fits better
- // into the cells (= self) responsiblilty.
-
- [aView dragImage:[dragSource dragImage]
- at:&theSpot
- offset:&zero
- event:theEvent
- pasteboard:dragPB
- source:self
- slideBack:NO];
-
- return nil;
- }
-
- - setSource:theObject
- {
- source = theObject;
- return self;
- }
-
- - source
- {
- return source;
- }
-
- - (NXDragOperation)draggingSourceOperationMaskForLocal:(BOOL)isLocal
- {
- if( isLocal )
- return NX_DragOperationCopy;
- return NX_DragOperationAll;
- }
-
- - setDraggingSource:anObject at:(unsigned)index
- {
- // This is not implemented properly !!
-
- if( !dragSources )
- dragSources = [List new];
-
- [dragSources addObject:anObject];
- return self;
- }
-
- @end
-
- /*
- * History: 13.01.95 Buh
- *
- *
- * Bugs: - ...
- */